D2: Recent Advances in Probabilistic Programming
Probabilistic programming is simply programming with probabilities. It can be used in the context of artificial intelligence or machine learning. Or more concretely, to perform random choices and then ask what the probability of certain results is: For example consider a program:
var x: Bool = flipCoin();
var y: Bool = flipCoin();
and then consider asking to infer the probability of x==y. (should be 50%)
Here are a number of recent papers on probabilistic programming. They vary from pragmatics to theory much. We will pick together in the first meeting on of these and forget the others.
If we pick a pragmatic one, you should write a program in it, explain the language based on your program, and then find other recent papers that do something similar and compare it with. If we pick a more theoretical one, you should first find similar usable language or library to write a program in, write one and and explain the general concept of probabilistic programming with it, and then compare that to the theories expressed in the paper:
References
- Stochastic Lazy Knowledge Compilation for Inference in Discrete Probabilistic Programs
- Roulette: A Language for Expressive, Exact, and Efficient Discrete Probabilistic Programming
- Random Variate Generation with Formal Guarantees
- Verified Foundations for Differential Privacy
- Semantics of Integrating and Differentiating Singularities
- Probabilities Compositional Imprecise Probability: A Solution from Graded Monads and Markov Categories